import UserInfo from '@jsjn/types/entity/UserInfo'
import BUS_EVENT_KEYS from './constants/BUS_EVENT_KEYS'

/**
 * 向基座发送数据，这里请区分基座和父级的区别
 *  - 基座：只有一个
 *  - 父级：由于嵌套应用的存在，父级会存在多个
 * 这个方法只适用于基座的直属微应用
 * @param data
 */
export function forParent(data: object) {
    window.$wujie?.bus.$emit(BUS_EVENT_KEYS.TO_BASIC_DATA, data)
}

/**
 * 向子级发送数据
 * @param data
 */
export function forMicro(data: object) {}

/**
 * 向父级发送数据，更新用户信息
 * @param data
 */
export function updateUserInfo(data: { userInfo: UserInfo; reload?: boolean }) {
    forParent({
        updateUserInfo: data
    })
}

/**
 * 向远程组件的父级发送数据
 * @param data
 */
export function toRemoteParent(data: object) {
    window.$wujie?.bus.$emit(`MICRO_REMOTE_DATA_CHANGE_${window.__WUJIE.id}`, data)
}
